<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //模式匹配，属性名相同的完成赋值
        //     const {
        //         age,
        //         username,
        //         password
        //     } = {
        //         age: 18,
        //         username: 'Cai',
        //         password: 123
        //     }
        //     console.log(age, username, password); //18 'Cai' 123

        //取别名
        //  const {
        //      age: age,
        //      username: uname
        //  } = {
        //      age: 19,
        //      username: 'Li'
        //  }
        //  console.log(age, uname); //19 'Li'

        //对象的属性值严格等于undefined时对应的值才会生效

        //   const {
        //       username = 'Zhang', age = 0
        //   } = {
        //       username: 'alex'
        //   }

        //   console.log(username, age); //alex  0

        //如果将一个已经声明的变量用于对象的解构赋值
        //整个赋值需要在圆括号中进行
        //     let x = 2;
        //     ({
        //         x
        //     } = {
        //         x: 1
        //     })
        //     console.log(x); //1

        //函数参数的解构赋值
        // const Person = ({
        //     age,
        //     username
        // }) => console.log(username, age); //
        // Person({
        //     age: 19,
        //     username: 'Cai'
        // })


        //复杂的嵌套
        //    const obj = {
        //        x: 1,
        //        y: [1, 2, 3],
        //        z: {
        //            a: 5,
        //            b: 6
        //        }
        //    };
        //    const {
        //        y,
        //        y: [, , ss],
        //        z
        //    } = obj;
        //    console.log(ss, y, z);

        //字符串的解构赋值
        //按照数组的形式
        //     const [a, b, , , e] = 'hello';
        //     console.log(a, b, e); // h e o
        //字符串的解构赋值
        //按照对象的形式
        const {
            0: a,
            1: b
        } = 'hello'

        console.log(a, b); // h e
    </script>
</body>

</html>